#pragma once
#include <unordered_set>

namespace Alice
{
    class PrimitiveSceneInfo;
    /**
     * Each command represents all the updates for a given scene object. Add/Delete/AttributeUpdate. 
     * Associated with a command are zero or more payloads which are arbitrarily typed data packets.
     */
    struct FUpdateCommand
    {
        PrimitiveSceneInfo*mPrimitiveSceneInfo;
        bool mbAdded;
        FUpdateCommand()
        {
            
        }
    };
    class SceneUpdateCommandQueue
    {
    public:
        void EnqueueAdd(PrimitiveSceneInfo*inPrimitiveSceneInfo);
        std::unordered_set<PrimitiveSceneInfo*> mCommandSlots;
        std::vector<FUpdateCommand*> mCommands;
    };
}
